import { ITodoData } from "./typings";
import TodoDom from "./TodoDom";
import { getTodoList, removeTodo, taogleTodo, addTodo } from './TodoService'
class TodoEvent extends TodoDom {
  constructor(private todoData: ITodoData[], todoWarpper: HTMLElement) {
    super(todoWarpper);
    this.init(this.todoData);
  };
  @getTodoList
  private init(todoData:ITodoData[]) {
    this.todoData = todoData;
    this.initList(this.todoData);
  };

  @addTodo
  public addTodo(todo: ITodoData) {
    const _todo: null | ITodoData = this.todoData.find(
      (item: ITodoData) => item.content === todo.content
    );
    if (!_todo) {
      this.todoData.push(todo);
      this.addItem(todo);
      return;
    }
    return 1001;
  };

  @removeTodo
  public removeTodo(target: HTMLElement, id: number): void {
    this.todoData = this.todoData.filter((todo: ITodoData) => todo.id === id);
    this.removeItem(target);
  };

  @taogleTodo
  public toggleComlete(target: HTMLElement, id: number): void {
    this.todoData = this.todoData.map((todo: ITodoData) => {
      if (todo.id === id) {
        todo.complete = !todo.complete;
        console.log(Date.now());
        this.changeComplete(target, todo.complete);
      }
      return todo;
    });
  }
}
export default TodoEvent;
